A conventional data transfer system, using auto-increment-pointer, includes a plurality of central processors, an I/O panel having a buffer, an internal pointer and an external pointer, and a system bus connected between the central processors and the I/O panel. The buffer includes a predetermined number of buffer areas accessed by the central processors and the I/O panel. The external pointer stores an initial address for access to the buffer areas by the central processors and the internal pointer stores an initial address for access to the buffer areas only by the I/O panel. The priority is decided among the central processors by a bus arbitration circuit.
In the conventional data transfer system, when the external pointer is read by one of the central processors which is selected by the bus arbitration circuit, address data stored in the external pointer is supplied to the central processor. Then, a predetermined data block is transferred from the central processor in a write mode to the buffer area designated by the address data of the external pointer. At this time, in the external pointer, an address value "1" is automatically added to the preceding address data, and the added address is stored in the external pointer as a subsequent address. In the same manner, a read mode is carried out between the central processors and the I/O panel.
On the other hand, when the internal pointer is accessed by the I/O panel, a predetermined data block is transferred from the buffer, for instance, to a periphery circuit in accordance with an address data stored in the internal pointer.
According to the conventional data transfer system, however, there are disadvantages in that when a transferred data block has a length longer than that of the buffer areas, the data block has to be divided so that the divided data is shorter than the length of the buffer areas, because the length of the buffer areas is fixed to be a predetermined length. As a result, a transfer speed is low. On the other hand, if a length of a transferred data block is shorter than that of the buffer area, a portion of the area is useless in the buffer.